home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / wtj007.zip / BLOOM.ZIP / STATDEMO.C < prev    next >
Text File  |  1992-07-24  |  11KB  |  394 lines

  1. // STATDEMO.C   STATISTCS dialog box routines
  2.  
  3. /*   This module will display the analysis of
  4.       the simulated data in our survey database. */
  5.  
  6.  
  7. #include "survdemo.h"
  8.  
  9.  /* DEFINE OWNER-DRAW BUTTON BORDER THICKNESS */
  10. #define THICKNESS   3
  11.  
  12.  
  13.        /* GDI Handles Used Only In Statdemo.c */
  14. HBRUSH hBrushBkGndStats;
  15. HBITMAP hBitmapBkGndStats;
  16. HBITMAP hBitmapSurvBtn1;
  17.  
  18. extern HICON hIconStats;
  19. extern HWND  hDlgGraph;
  20.  
  21. extern struct
  22.   {
  23.   int idno;
  24.   int fieldno;
  25.   }
  26.  checkbox[];
  27.  
  28.  
  29. #define MAXRECS  45
  30.  
  31. #define nFields  45
  32.  
  33. // Array of stat data
  34.  
  35. STATDATA statdata[MAXRECS];
  36.  
  37. fakedataStats[nFields] =
  38.   {
  39.   6,10,6,1,1,
  40.   4,11,8,1,0,
  41.   4,9,8,3,0,
  42.   5,9,6,2,0,
  43.   5,10,5,2,2,
  44.   7,10,2,3,2,
  45.   7,8,5,2,2,
  46.   3,12,5,2,1,
  47.   6,11,6,1,0
  48.   };
  49.  
  50.  
  51.  
  52.  
  53. /**************************************************/
  54. BOOL FAR PASCAL StatisticsDlgProc( HWND hDlg,
  55.                      unsigned iMessage, WORD wParam,
  56.                      LONG lParam )
  57.   {
  58.   WORD CtrlID; /* ID of DlgBox's child control */
  59.   int type;
  60.   int i,id;
  61.   char buff[MAXFIELDSIZE];
  62.   DWORD wMsgReturn,wMsgRet;
  63.   double Recnum;
  64.   static FARPROC lpfnGraphDlgProc;
  65.   static HWND hCtrlHead401, hCtrlHead402;
  66.  
  67.  
  68.     switch ( iMessage )
  69.     {
  70.     case WM_INITDIALOG:
  71.  
  72.       lpfnGraphDlgProc = MakeProcInstance
  73.                             (GraphDlgProc, hInst );
  74.  
  75.       hBitmapBkGndStats  = LoadBitmap(hInst,
  76.                                        "BkGndCyn");
  77.       hBrushBkGndStats = CreatePatternBrush
  78.                                (hBitmapBkGndStats);
  79.       hBitmapSurvBtn1  = LoadBitmap(hInst,
  80.                                        "SurvBtn1");
  81.  
  82.       // Test the use of WM_SETFONT
  83.  
  84.       hCtrlHead401 = GetDlgItem(hDlg, IDSTAT_401);
  85.       SendMessage(hCtrlHead401,WM_SETFONT,
  86.                                     hFontTimes,0);
  87.  
  88.       hCtrlHead402 = GetDlgItem(hDlg, IDSTAT_402);
  89.       SendMessage(hCtrlHead402,WM_SETFONT,
  90.                                hFontTimesSmall,0);
  91.  
  92.       MakeStats(hDlg);
  93.       break;
  94.  
  95.     case WM_PAINT:
  96.       if (IsIconic(hDlg))
  97.         {
  98.         PaintIcon(hDlg,hIconStats);
  99.         break;
  100.         }
  101.       else
  102.           PaintStats(hDlg);
  103.           break;
  104.  
  105.     case WM_DRAWITEM:
  106.       id = ((LPDRAWITEMSTRUCT)lParam)->CtlID;
  107.       switch (id)
  108.         {
  109.         case IDSPB_PRINT9:
  110.           SetODButton((LPDRAWITEMSTRUCT)lParam,0,0,
  111.                               DT_CENTER,THICKNESS);
  112.           return TRUE;
  113.  
  114.         case IDSPB_UPDATE8:
  115.           SetODButton((LPDRAWITEMSTRUCT)lParam,0,0,
  116.                               DT_CENTER,THICKNESS);
  117.           return TRUE;
  118.  
  119.         case IDSPB_QUIT507:
  120.           SetODButton((LPDRAWITEMSTRUCT)lParam,0,0,
  121.                               DT_CENTER,THICKNESS);
  122.           return TRUE;
  123.  
  124.         case IDSPB_MW11:
  125.           SetODButton((LPDRAWITEMSTRUCT)lParam,
  126.                          hBitmapSurvBtn1,0,
  127.                          DT_CENTER,THICKNESS);
  128.           return TRUE;
  129.  
  130.         default:
  131.           break;
  132.         }
  133.       break;
  134.  
  135.  
  136.     case WM_CTLCOLOR:
  137.       type = HIWORD (lParam);
  138.       CtrlID = GetWindowWord (LOWORD (lParam),
  139.                                 GWW_ID) ;
  140.       switch (type)
  141.         {
  142.         case CTLCOLOR_DLG:
  143.           return ((DWORD) hBrushBkGndStats);
  144.  
  145.         case CTLCOLOR_BTN:
  146.           SetBkMode(wParam, TRANSPARENT);
  147.           SetBkColor(wParam, GetSysColor
  148.                                    (COLOR_WINDOW));
  149.           switch(CtrlID)
  150.             {
  151.             case IDSPB_PRINT9:
  152.               SetTextColor(wParam, YELLOW);
  153.               SelectObject(wParam,hDarkGrayPen);
  154.               SelectObject(wParam,hFontTimesButton);
  155.               return ((DWORD) hBrushDarkGreen);
  156.  
  157.             case IDSPB_UPDATE8:
  158.               SetTextColor(wParam, BLUE);
  159.               SelectObject(wParam,hDarkGrayPen);
  160.               SelectObject(wParam,hFontTimesButton);
  161.               return ((DWORD) hBrushYellow);
  162.  
  163.             case IDSPB_QUIT507:
  164.               SetTextColor(wParam, BLUE);
  165.               SelectObject(wParam,hDarkGrayPen);
  166.               SelectObject(wParam,hFontTimesButton);
  167.               return ((DWORD) hBrushRed);
  168.  
  169.             case IDSPB_MW11:
  170.               SelectObject(wParam,hDarkGrayPen);
  171.               return ((DWORD) hBrushRed);
  172.  
  173.             default:
  174.               SetTextColor(wParam, GREEN);
  175.               SelectObject(wParam,hFontTimesButton);
  176.               return ((DWORD) hBrushMagenta);
  177.             }
  178.  
  179.         case CTLCOLOR_STATIC:
  180.           SetBkMode(wParam, TRANSPARENT);
  181.           switch(CtrlID)
  182.             {
  183.             case IDSTAT_401:
  184.               SetTextColor(wParam,RED);
  185.             //  SelectObject(wParam,hFontTimes);
  186.               return ((DWORD) hBrushBkGndStats);
  187.  
  188.             case IDSTAT_402:
  189.               SetTextColor(wParam,BLUE);
  190.             //  SelectObject(wParam,hFontTimesSmall);
  191.               return ((DWORD) hBrushBkGndStats);
  192.  
  193.             case IDSTAT_HEADING:
  194.               SetTextColor(wParam,RED);
  195.               SelectObject(wParam,hFontTimes);
  196.               return ((DWORD) hBrushBkGndStats);
  197.  
  198.             case IDSTAT_TEXTBLUE:
  199.               SetTextColor(wParam,BLUE);
  200.               SelectObject(wParam,hFontTimesSmall);
  201.               return ((DWORD) hBrushBkGndStats);
  202.  
  203.             case IDSTAT_TEXTGREEN:
  204.               SetTextColor(wParam,BLACK);
  205.               SelectObject(wParam,hFontTimesSmall);
  206.               return ((DWORD) hBrushBkGndStats);
  207.  
  208.             case IDSTAT_TEXTMAGENTA:
  209.               SetTextColor(wParam,DARKMAGENTA);
  210.               SelectObject(wParam,hFontTimesSmall);
  211.               return ((DWORD) hBrushBkGndStats);
  212.  
  213.             case IDSTAT_TEXTMAGENTASMALL:
  214.               SetTextColor(wParam,DARKMAGENTA);
  215.               SelectObject(wParam,hFontTimesVerySmall);
  216.               return ((DWORD) hBrushBkGndSurvey);
  217.  
  218.             case IDSTAT_CATAGORY:
  219.               SetTextColor(wParam,DARKMAGENTA);
  220.               SelectObject(wParam,hFontTimes);
  221.               return ((DWORD) hBrushBkGndStats);
  222.  
  223.             case IDSEX_HL1: case IDSEX_HL2:
  224.             case IDSEX_HL3: case IDSEX_HL4:
  225.             case IDSEX_HL5: case IDSEX_MWSA6:
  226.             case IDSEX_MWA7: case IDSEX_MWNA8:
  227.             case IDSEX_MWD9: case IDSEX_MWSD10:
  228.             case IDSEX_QCSA11: case IDSEX_QCA12:
  229.             case IDSEX_QCNA13: case IDSEX_QCD14:
  230.             case IDSEX_QCSD15: case IDSEX_HISA16:
  231.             case IDSEX_HIA17: case IDSEX_HINA18:
  232.             case IDSEX_HID19: case IDSEX_HISD20:
  233.             case IDSEX_LUSA21: case IDSEX_LUA22:
  234.             case IDSEX_LUNA23: case IDSEX_LUD24:
  235.             case IDSEX_LUSD25: case IDSEX_NISA26:
  236.             case IDSEX_NIA27: case IDSEX_NINA28:
  237.             case IDSEX_NID29: case IDSEX_NISD30:
  238.             case IDSEX_HUSA31: case IDSEX_HUA32:
  239.             case IDSEX_HUNA33: case IDSEX_HUD34:
  240.             case IDSEX_HUSD35: case IDSEX_HBSA36:
  241.             case IDSEX_HBA37: case IDSEX_HBNA38:
  242.             case IDSEX_HBD39: case IDSEX_HBSD40:
  243.             case IDSEX_OVSA41: case IDSEX_OVA42:
  244.             case IDSEX_OVNA43: case IDSEX_OVD44:
  245.             case IDSEX_OVSD45:
  246.               SetTextColor(wParam, BLUE);
  247.               return ((DWORD) hBrushBkGndStats);
  248.  
  249.             case IDSEX_HL1PC: case IDSEX_HL2PC:
  250.             case IDSEX_HL3PC: case IDSEX_HL4PC:
  251.             case IDSEX_HL5PC: case IDSEX_MWSA6PC:
  252.             case IDSEX_MWA7PC: case IDSEX_MWNA8PC:
  253.             case IDSEX_MWD9PC: case IDSEX_MWSD10PC:
  254.             case IDSEX_QCSA11PC: case IDSEX_QCA12PC:
  255.             case IDSEX_QCNA13PC: case IDSEX_QCD14PC:
  256.             case IDSEX_QCSD15PC: case IDSEX_HISA16PC:
  257.             case IDSEX_HIA17PC: case IDSEX_HINA18PC:
  258.             case IDSEX_HID19PC: case IDSEX_HISD20PC:
  259.             case IDSEX_LUSA21PC: case IDSEX_LUA22PC:
  260.             case IDSEX_LUNA23PC: case IDSEX_LUD24PC:
  261.             case IDSEX_LUSD25PC: case IDSEX_NISA26PC:
  262.             case IDSEX_NIA27PC: case IDSEX_NINA28PC:
  263.             case IDSEX_NID29PC: case IDSEX_NISD30PC:
  264.             case IDSEX_HUSA31PC: case IDSEX_HUA32PC:
  265.             case IDSEX_HUNA33PC: case IDSEX_HUD34PC:
  266.             case IDSEX_HUSD35PC: case IDSEX_HBSA36PC:
  267.             case IDSEX_HBA37PC: case IDSEX_HBNA38PC:
  268.             case IDSEX_HBD39PC: case IDSEX_HBSD40PC:
  269.             case IDSEX_OVSA41PC: case IDSEX_OVA42PC:
  270.             case IDSEX_OVNA43PC: case IDSEX_OVD44PC:
  271.             case IDSEX_OVSD45PC:
  272.               SetTextColor(wParam, RED);
  273.               return ((DWORD) hBrushBkGndStats);
  274.  
  275.  
  276.             default:
  277.               SetTextColor(wParam, DARKGREEN);
  278.               SetBkMode(wParam, TRANSPARENT);
  279.               return ((DWORD) hBrushBkGndStats);
  280.             }
  281.  
  282.         default:
  283.  
  284.           SetTextColor(wParam, BLUE);
  285.           SetBkMode(wParam, TRANSPARENT);
  286.           return ((DWORD) hBrushBkGndStats);
  287.         }
  288.  
  289.  
  290.  
  291.       case WM_COMMAND:
  292.         switch ( wParam )
  293.           {
  294.           case IDSPB_UPDATE8:
  295.             MakeStats(hDlg);
  296.             break;
  297.  
  298.  
  299.           case IDSPB_MW11:
  300.             if(!hDlgGraph)
  301.             hDlgGraph = CreateDialog (hInst, "Graph",
  302.                           NULL, lpfnGraphDlgProc);
  303.             break;
  304.  
  305.  
  306.           case IDSPB_PRINT9:
  307.             break;
  308.  
  309.           case IDSPB_QUIT507:
  310.             SendMessage( hDlg, WMS_CLOSE, 0, 0L );
  311.             break;
  312.  
  313.           default:
  314.             return FALSE;
  315.           }
  316.         break;
  317.  
  318.       case WMS_CLOSE:
  319.             /* Send a WM_DESTROY message. */
  320.         DeleteObject (hBitmapBkGndStats);
  321.         DeleteObject(hBrushBkGndStats);
  322.         DeleteObject(hBitmapSurvBtn1);
  323.         DestroyWindow( hDlg );
  324.         hDlgStatistics= 0;
  325.         break;
  326.  
  327.  
  328.       default:
  329.             return FALSE;
  330.     }
  331.  
  332.     return FALSE;
  333.   }
  334.  
  335.  
  336.  
  337. void MakeStats(HWND hDlg)
  338.   {
  339.   char buf[MAXFIELDSIZE];
  340.   int i,j,k, tot;
  341.  
  342.     // MAKE FAKE STAT DATA AREA
  343.   for (i=0;i<nFields;i++)
  344.     statdata[i].itemtot = fakedataStats[i];
  345.  
  346. // GET PRESENT REC NUMBER ASSUMED TO BE FORMS TOTAL
  347.  
  348.   tot= 24;
  349.   itoa((int)tot,buf,10);
  350.   SetDlgItemText( hDlgStatistics, IDSEX_RECNO403,
  351.                                               buf );
  352.  
  353. // make ave. and display
  354.  
  355.   for (j=0;j<nFields;j++)
  356.     {
  357.     statdata[j].itemave = 100*statdata[j].
  358.                                      itemtot/tot;
  359.     k = j + 1101;
  360.     wsprintf((LPSTR)buf,"%3ld",statdata[j].itemtot);
  361.     SetDlgItemText(hDlgStatistics, k, buf );
  362.     wsprintf((LPSTR)buf,"/%2ld",statdata[j].itemave);
  363.     k = j + 1201;
  364.     SetDlgItemText(hDlgStatistics, k, buf );
  365.     }
  366.   }
  367.  
  368.  
  369.  
  370. void PaintStats(HWND hDlg)
  371.   {
  372.   char buf[MAXFIELDSIZE];
  373.   int i,j,k,tot=24;
  374.  
  375.   for (i=0;i<nFields;i++)
  376.     statdata[i].itemtot = fakedataStats[i];
  377.  
  378. // make ave. and display
  379.  
  380.   for (j=0;j<nFields;j++)
  381.     {
  382.     statdata[j].itemave = 100*statdata[j].itemtot
  383.                                               /tot;
  384.     k = j + 1101;
  385.     wsprintf((LPSTR)buf,"%3ld",statdata[j].itemtot);
  386.     SetDlgItemText(hDlgStatistics, k, buf );
  387.     wsprintf((LPSTR)buf,"/%2ld",statdata[j].itemave);
  388.     k = j + 1201;
  389.     SetDlgItemText(hDlgStatistics, k, buf );
  390.     }
  391.   }
  392.  
  393.  
  394.